
class Student:
    # 类的属性
    school = '武汉大学'

    # 初始方法
    def __init__(self, name, age):
        # 左侧实例属性，右侧局部变量
        self._name = name
        self._age = age

    # 实例方法，可以调用实例属性
    def show(self):
        return f'{self._name}今年{self._age}岁了'

    # 类方法
    @classmethod
    def cm(cls):
        print('这是一个类方法，不能调用实例属性和实例方法')

    # 类静态方法
    @staticmethod
    def sm():
        print('这是一个类静态方法，不能调用实例属性和实例方法')


stu1 = Student('张三', 20)
stu2 = Student('李四', 21)

# 动态绑定属性
stu2._gender = '男'
print(stu1.show())
print(stu2.show(), '性别：', stu2._gender)


def intro():
    return '我被动态绑定给 stu2'


# 动态绑定方法
stu2.func = intro
# 使用实例调用方法
print('intro: ', stu2.func())
